By way of background, device drivers are programs or routines which control or manage the flow of data to and from I/O devices. The drivers form part of and interact with other portions of an operating system. An operating system normally includes a basic set of device drivers for I/O devices, such as a keyboard, fixed and floppy disks, display, and printer, commonly used in a personal computer. When an I/O device is added to a data processing system, and such device is not operable under an existing driver, a new driver must be added to the system in order to use the device. Such new driver is customarily supplied by the maker of the I/O device and is installed in the system in accordance with procedures established by the operating system. In personal computers operating with IBM DOS or OS/2 operating systems, such drivers are installed, when the computers are started or rebooted, using commands or instructions in a CONFIG.SYS file.
The high performance models of the IBM PS/2 personal computers include a bus designed in accordance with Micro Channel architecture. (IBM, OS/2, PS/2 and Micro Channel are trademarks of International Business Machines Corporation). Such bus is referred to hereinafter as an "IMC bus" and provides the means by which additional I/O devices and subsystems can be connected to the personal computers. A SCSI (Small Computer System Interface) bus is a bus designed in accordance with SCSI architecture, and provides a standardized design for the attachment thereto of I/O devices known as SCSI devices, that is, devices specifically designed for attachment to a SCSI bus. Such architecture defines a SCSI command set for accessing the devices. Recently, a SCSI adapter and SCSI ABIOS (advanced basic input/output operating system) were developed which allow SCSI devices to be connected to PS/2 computers through the MC bus, and this has created some difficulties or problems which the present invention overcomes.
First, the basic OS/2 drivers for common (non-SCSI) I/O devices cannot be used with SCSI devices, and a driver written for use with one type of operating system cannot be used with another type. Accordingly, the makers of SCSI devices are faced with the prospect of having to write multiple drivers, one for each type of operating system for which they expect to market a SCSI device. A complete driver is relatively complex and commonly requires many programmer months to develop. This can add up to a substantial development effort if several devices must be supported under different operating systems, and it may delay the general availability and widespread use of SCSI devices. The invention, as described in greater detail below, has an objective of simplifying the driver to be provided by a maker or supplier of SCSI devices for use in a data processing system programmed to operate under OS/2 operating system. Simplification makes it easier and cheaper to develop and supply such drivers. This objective is accomplished by a two tier driver system in which the SCSI developer provides a SCSI driver that is specific to a class of SCSI devices, and the operating system includes a generic SCSI driver having functions commonly used by the specific driver classes. Not only does such system eliminate the need for developers to include common functions but it also hides from the developer the need to program to the relatively complex interface with ABIOS.
Second, PS/2 personal computers include microprocessors that operate in both real mode and protected mode. Bimodal operation provides compatibility with older application programs and allows such microprocessors to run both application programs written for a DOS environment and application programs written for an OS/2 environment. Device drivers are also bimodal so that such drivers and corresponding devices can be used for both DOS and OS/2 application programs. Under OS/2, device drivers are loaded into the low end of physical memory for access by both DOS and OS/2 application programs. The more drivers there are, the more memory space is used thereby limiting the amount of physical memory space used for DOS application programs which run in real mode. Thus, another objective of the invention is to provide a SCSI driver system which efficiently uses memory address space. This objective is also satisfied by having a two tier driver system in which common functions are included in a generic driver. The common functions are used by SCSI device-class drivers and thus avoid the need for each driver to be complete in itself and thereby duplicate functions and waste memory space.